#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>

int main(void)
{
    pid_t pid;
    char *str[] = {"ls", "-la", NULL};
    pid = fork(); // 创建子进程

    if (-1 == pid) {
        perror("fork()");
        exit(1);
    }

    /* 进程创建成功 */
    if (0 == pid) {
        printf("子进程PID %d\n", getpid());
        // execl("/bin/ls", "ls", "-la", NULL); // 进程替换
        // execlp("ls", "ls", "-l", "-a", NULL); // 等价的函数
        // execv("/bin/ls", str);
        execvp("ls", str);
        printf("hello\n"); // 此代码不会执行，上方代码已经被替换了
    } else {
        printf("父进程PID %d\n", getpid());
    }

    wait(NULL); // 等待子进程结束

    return 0;
}
